/**
 * 
 */
package gestionBulletins.model.persistance;

import java.util.Collection;

import gestionBulletins.model.Adherent;
import gestionBulletins.model.Enfant;

/**
 * Fait la liaison entre le code applicatif et la base de données pour les enfants des Adhérents.
 * @author Paraita Wohler
 *
 */
public interface DaoEnfant {
	
	/**
	 * Permet de rendre persistant un enfant
	 * @param enfant l'enfant à rendre persistant
	 * @return l'enfant une fois rendu persistant
	 */
	public Enfant create(Enfant enfant);
	
	/**
	 * Recupère un enfant par rapport à son identifiant dans la base de données
	 * @param id l'identifiant dans la base de données de l'enfant
	 * @return l'enfant
	 */
	public Enfant requestById(int id);
	
	/**
	 * Recupère l'identifiant d'un enfant par rapport à son nom et son prénom usuel.
	 * @param nom le nom de famille de l'enfant cherché
	 * @param prenom le prénom usuel de l'enfant cherché
	 * @return l'identifiant dans la base de données de l'enfant cherché.Si l'enfant n'est pas dans la base données, retourne 0.
	 */
	public int requestIdByNomPrenom(String nom, String prenom);
	
	/**
	 * Recupère l'ensemble des enfants d'un adhérent.
	 * @param adherent l'adhérent dont on cherche les enfants.
	 * @return l'ensemble des enfants de l'adhérent. Cet ensemble est vide s'il ne possède pas d'enfants, ou si cet adhérent n'est pas trouvé dans la base de données.
	 */
	public Collection<Enfant> requestAllByParentId(Adherent adherent);
	
	/**
	 * Met à jour les informations d'un enfant, dans la base de données
	 * @param enfant l'enfant à modifier les informations dans la base de données
	 */
	public void update(Enfant enfant);
	
	/**
	 * Supprime un enfant de la base de données
	 * @param enfant l'enfant à supprimer de la base de données
	 */
	public void delete(Enfant enfant);

}
